package com.osdp.sc.api;

import com.osdp.sc.dto.PermissionDTO;

import java.util.List;
import java.util.Optional;
import java.util.Set;

public interface IPermissionApi {
    /**
     * 根据用户ID 查询权限
     * @param userId String
     * @return List<ScPermission>
     */
    List<PermissionDTO> queryPermissionsByUserId(String userId);

    /**
     * 查询所有按钮资源
     * @return List<PermissionVo>
     */
    List<PermissionDTO> queryPermissionButtonByUserId(String userId);

    /**
     * 查询API权限集合
     * @param userId String 用户ID
     * @return List<PermissionVo>
     */
    List<PermissionDTO> queryPermissionAPIByUserId(String userId);

    /**
     * 根据用户ID查询资源权限 code
     * @param userId String
     * @return
     */
    List<String> queryPermsCodeByUserId(String userId);

    /**
     * 根据角色编码查询所有按钮与API资源
     * @param roleCodes Set<String>
     * @param tenantId String
     * @return Optional<List<PermissionDTO>>
     */
    Optional<List<PermissionDTO>> queryPermsButtonAndAPIByRoleCode(Set<String> roleCodes, String tenantId);

    /**
     *
     * @param uri
     * @param method
     * @param authoritys
     * @return
     */
    boolean allow(String uri, String method, Set<String> authoritys);
}
